package com.yupi.springbootinit.service;

import com.yupi.springbootinit.model.dto.production.printingrecord.CompleteProcessRequest;
import com.yupi.springbootinit.model.dto.production.printingrecord.StartProcessRequest;
import com.yupi.springbootinit.model.dto.production.printingrecord.StartProductionFlowRequest;
import com.yupi.springbootinit.model.vo.production.ProcessCompleteVO;
import com.yupi.springbootinit.model.vo.production.ProcessStepVO;
import com.yupi.springbootinit.model.vo.production.ProductionTaskDetailVO;

import java.util.List;

/**
 * 生产工序服务接口
 *
 * 职责：
 * - 工序流程管理（开始生产、开始工序、完成工序）
 * - 工序列表查询
 * - 工序状态转换
 */
public interface ProductionProcessService {

    /**
     * 开始生产流程（启动第一道工序）
     *
     * @param request 开始生产请求
     * @param loginUserId 登录用户ID
     * @param loginUserName 登录用户姓名
     * @return 是否成功
     */
    boolean startProduction(StartProductionFlowRequest request, Long loginUserId, String loginUserName);

    /**
     * 开始工序
     *
     * @param request 开始工序请求
     * @param loginUserId 登录用户ID
     * @param loginUserName 登录用户姓名
     * @return 是否成功
     */
    boolean startProcess(StartProcessRequest request, Long loginUserId, String loginUserName);

    /**
     * 完成工序
     *
     * @param request 完成工序请求
     * @param loginUserId 登录用户ID
     * @param loginUserName 登录用户姓名
     * @return 工序完成结果VO
     */
    ProcessCompleteVO completeProcess(CompleteProcessRequest request, Long loginUserId, String loginUserName);

    /**
     * 获取生产任务详情（包含批次信息、产品列表、工序列表）
     *
     * @param taskId 任务ID
     * @return 生产任务详情
     */
    ProductionTaskDetailVO getProductionTaskDetail(Long taskId);
}